home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ccdl150l.zip / IO / READBUF.C < prev    next >
C/C++ Source or Header  |  1997-06-09  |  968b  |  42 lines

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <libp.h>
  4.  
  5. int _readbuf(FILE *stream)
  6. {
  7.     if (!(stream->flags & _F_IN) || !stream->level) {
  8.         if (stream->flags & _F_OUT) {
  9.             if (fflush(stream))
  10.                 return EOF;
  11.         }
  12.         stream->flags &= ~_F_OUT;
  13.         if (!(stream->flags & _F_IN)) {
  14.             stream->level = 0;
  15.             stream->curp = stream->buffer;
  16.             stream->hold = 0;
  17.         }
  18.         stream->flags |= _F_IN;
  19.         if (!stream->level) {
  20.             stream->curp = stream->buffer;
  21.             if (stream->flags & _F_LBUF) {
  22.                 while (stream->level < stream->bsize) {
  23.                     int sz = _ll_read(stream->fd,stream->curp,1);
  24.                     if (!sz)
  25.                         break;
  26.                     stream->level++;
  27.                     if ((*stream->curp == '\n') || (*stream->curp == '\r'))
  28.                         break;
  29.                     stream->curp++;
  30.                 }
  31.                 stream->curp = stream->buffer;
  32.             }
  33.             else 
  34.                 stream->level = _ll_read(stream->fd,stream->buffer,stream->bsize);
  35.         }
  36.     }
  37.     if (stream->level == 0) {
  38.         stream->flags |= _F_EOF;
  39.         return EOF;
  40.     }
  41.     return 0;
  42. }